//
//  Status.swift
//  个人微博
//
//  Created by 一介布衣 on 16/2/21.
//  Copyright © 2016年 HUAMANLOU. All rights reserved.
//

import UIKit

class Status: NSObject {
    
    // 微博ID
    var id: Int64 = 0
    // 微博创建的时间
    var created_at: String?
    // 微博正文
    var text: String?
    // 微博来源
    var source: String?
    
    // 用户模型属性
    var user: User?
    
    // 转发微博模型，嵌套在微博字段中
    // 如果是原创微博，retweeted_status不存在
    var retweeted_status: Status?
    
    // 配图视图数组的属性
    // 配图视图数组永远不可能为nil的，
    // 服务器在没有配图的情况下，依然会返回一个空数组，而非null对象
    var pic_urls: [[String:String]]? {
        didSet {
            guard let urls = pic_urls else {
                return
            }
            
            imageURLs = [NSURL]()
            // 遍历urls
            for item in urls {
                let urlString = item["thumbnail_pic"]
                // 替换后可以是图片清晰很多
                let uString = urlString?.stringByReplacingOccurrencesOfString("thumbnail", withString: "bmiddle")
                let url = NSURL(string: uString!)
                imageURLs?.append(url!)
            }
        }
    }
    
    var imageURLs:[NSURL]?
    
    // 使用KVC设置初始值
    init(dict: [String:AnyObject]) {
        super.init()
        //遍历键值 给对象转发 setValue: forKey: 消息
        setValuesForKeysWithDictionary(dict)
    }
    
    // 在这个方法中，获取status中的user,给user的属性初始化
    override func setValue(value: AnyObject?, forKey key: String) {
        if key == "user" {
            // 将AnyObject转换为字典对象
            if let dict = value as? [String:AnyObject] {
                // 对user做字典转模型
                user = User(dict: dict)
                 // 需要提前终止，否则字典转模型就白做了
                return
            }
        }
        
        if key == "retweeted_status" {
            // 给uer属性初始化
            // 将AnyObject转换为字典对象
            if let dict = value as? [String:AnyObject] {
                retweeted_status = Status(dict: dict)
                return
            }
        }
        
        // 很重要的一步，调用super
        super.setValue(value, forKey: key)
    }
    
    
    // 过滤
    override func setValue(value: AnyObject?, forUndefinedKey key: String) { }
    
}
